<!--
@BLINK-ALLOW:htmlTag=*
@WAIT-FOR:Done
-->
<!DOCTYPE html>
<html>
<body>
  <template id="template">
    <div><slot name="my-slot"></slot></div>
  </template>

  <div hidden>
    <my-element>
      <span slot="my-slot">Slot contents</span>
    </my-element>
  </div>

  <button id="status"></button>

  <script>
    // After a delay, make "my-element" into a custom element using
    // the template defined above. That will cause the template to be
    // rendered inside <my-element>, and the slot contents to be reparented
    // to the <slot> element.
    window.setTimeout(() => {
        customElements.define(
            'my-element',
            class extends HTMLElement {
                constructor() {
                    super();
                    let template = document.getElementById('template');
                    let templateContent = template.content;

                    const shadowRoot = this.attachShadow({mode: 'open'})
                          .appendChild(templateContent.cloneNode(true));
                }
            }
        );
        document.getElementById('status').setAttribute('aria-label', 'Done');
    }, 500);
  </script>
</body>
